#ifndef VF_LAMINATE_H
#define VF_LAMINATE_H
#include <string>

namespace VFAdapter {

//! 层压板(铺层描述)
struct LaminateDesc {
  int64_t NetBoundary;
  int64_t ExtBoundary;
  int64_t LayupSurface;
  int64_t Origin;
};

//! 层压板(材质描述)
struct MaterialDesc {
  std::string Specification;
  double Thickness; // 厚度(单位为米)
  long Color0;
  long Color45;
  long Color90;
  long Color135;
  long ColorOther;

public:
  bool operator<(MaterialDesc const &rhs) const {
    return Specification < rhs.Specification;
  }
};

//! 层压板(层描述)
struct PlyDesc {
  std::string Name;                 // 来自数据库
  std::string Material;             // 来自数据库
  int Step;                         // 铺设步骤 来自数据库
  std::string Sequence;             // 铺贴顺序 来自数据库
  int64_t NetBoundary;              // 净边界  来自数据库
  int64_t ExtBoundary;              // 外边界  来自数据库
  std::string SpecifiedOrientation; // 角度 来自数据库
  double Thickness;                 // 厚度(单位为米) 由材料名得
  double OuterOffsetDistance;       // 外层偏移距离(单位为米)
};

struct LaminateRelateData {
  std::vector<PlyDesc> PlyList;
  LaminateDesc Desc;
  std::map<std::string, MaterialDesc> MaterialMap;
};

} // namespace VFAdapter

#endif